package com.bajiao.service.coupon;

import com.bajiao.common.util.StringUtils;
import com.bajiao.dto.store.QueryStoreDto;
import com.bajiao.entity.coupon.Coupon;
import com.bajiao.vo.coupon.CouponDetailsResponse;
import com.bajiao.vo.coupon.CouponResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @Description: 优惠券表
 * @Author: FanJq
 * @Date:   2024-12-12
 * @Version: V1.0
 */
public interface CouponService extends IService<Coupon> {

    /**
     * @Description
     * 获取首页列表
     * @date 2024/12/12 15:30
     * @author FanJq
     * @param limit
     * @return {@link List< Coupon>}
    */
    List<CouponResponse> getIndexList(String userId, Integer limit);

    /**
     * @Description
     * 获取商家专属优惠券
     * @date 2024/12/13 15:15
     * @author FanJq
     * @param storeId
     * @return {@link List< Coupon>}
    */
    List<CouponResponse> getByStoreId(String userId, String storeId);

    /**
     * @Description
     * 获取优惠券分页列表
     * @date 2024/12/13 17:11
     * @author FanJq
     * @param userId
     * @param type
     * @return {@link List< CouponResponse>}
    */
    List<CouponResponse> getPage(String userId, Integer type);

    /**
     * @Description
     * 订单可用劵
     * @date 2024/12/13 17:27
     * @author FanJq
     * @param userId
     * @param storeId
     * @return {@link List< CouponResponse>}
    */
    List<CouponResponse> getOrderCouponPage(String userId, String storeId);

    /**
     * @Description
     * 获取优惠券详情
     * @date 2024/12/18 15:05
     * @author FanJq
     * @param userId
     * @param couponId
     * @return {@link CouponDetailsResponse}
    */
    CouponDetailsResponse getDetails(String userId, String couponId);

    /**
     * @Description
     * 处理销量
     * @date 2024/12/18 16:47
     * @author FanJq
     * @param couponId
     * @param flag
     * @return
    */
    void salesLogic(String couponId, Integer flag);

    /**
     * @description: 首页-热门推荐-可使用商家
     * @author: wangw
     * @date: 2025.03.03
     */
    IPage<QueryStoreDto> getUseableStoreList(String couponId, Integer pageNumber, Integer pageSize);

}
